package com.thread;

import lombok.extern.slf4j.Slf4j;


/**
 * 比较线程调用start方法和run方法区别
 */
@Slf4j
public class RunMethodAndStartMethod {
    /**
     * 首先要清楚两个方法的区别
     * start方法：启动一个新线程，在新的线程中运行run方法中的代码
     * run方法，新线程启动后会调用的方法
     */
    /**
     * 根据下面的运行，会发现
     * run方法运行，依旧是同步，都是main线程
     * start方法运行，会启动一个异步线程进行执行
     *
     * @param args
     */
    public static void main(String[] args) {
//        methodRun();
        methodStart();
        log.debug("do ohter thing");
    }

    private static void methodRun() {
        Thread t1 = new Thread("t1") {
            @Override
            public void run() {
                log.debug(Thread.currentThread().getName());
                System.out.println("线程1执行任务1");
            }
        };
        t1.run();
    }

    private static void methodStart() {
        Thread t1 = new Thread("t1") {
            @Override
            public void run() {
                log.debug(Thread.currentThread().getName());
                System.out.println("线程1执行任务1");
            }
        };
        t1.start();
    }
}
